Skip to content

chore(release): cut 0.12.0#1112

Merged
danielmeppiel merged 3 commits intomainfrom
release/0.12.0
May 3, 2026
Merged

chore(release): cut 0.12.0#1112
danielmeppiel merged 3 commits intomainfrom
release/0.12.0

Conversation

@danielmeppiel
Copy link
Copy Markdown
Collaborator

TL;DR

Cuts 0.12.0. Promotes [Unreleased] to [0.12.0] - 2026-05-03,
bumps pyproject.toml + uv.lock to 0.12.0, fills one residual
(#PR_NUMBER) placeholder.

44 commits since v0.11.0.

Version-bump rationale

Minor bump (0.12.0) chosen over patch because this release
ships two BREAKING changes plus several net-new features.
Strict semver in 0.x: minor for features-with-break, patch only
for bugfixes.

Breaking changes

Highlights

Theme Headline
New target Windsurf / Cascade is now a first-class compile + integrate + pack target. (#1066)
New target Claude Code as MCP install target with .mcp.json (project) + atomic ~/.claude.json (user) writes; live-captured fixture parity. (#1104, closes #643)
New target --target copilot emits .github/copilot-instructions.md natively. (#1048)
New target --target agent-skills deploys to cross-client .agents/skills/. (closes #737)
Distribution apm install <local-bundle-path> air-gapped install with sha256 integrity. (#1098)
Distribution apm pack embeds apm.lock.yaml + path -> sha256 manifest. (#1098)
Marketplace apm marketplace add accepts full HTTPS URLs and nested HOST/group/sub/.../REPO shorthands. (#1034, closes #1027)
Marketplace apm pack marketplace builder hardening + plugin manifest schema-conformance tests. (#1061)
Skills routing Copilot + Cursor + OpenCode + Codex + Gemini converged on .agents/skills/; auto-migration of legacy per-client paths; --legacy-skill-paths opt-out. (closes #1103, #737)
Slash commands Claude Code argument hints auto-mapped from prompt input:. (#1039)
NOTICE Renamed NOTICE.md -> NOTICE (Apache / CNCF convention) + third-party-submissions section. (#1073)
Local deps apm install anchors transitive local_path deps on declaring package (npm/pip/cargo parity); remote-cloned packages can no longer declare local deps. (#1111, closes #857) Thanks @JahanzaibTayyab.
apm compile Globals render under ## Global Instructions in AGENTS.md / CLAUDE.md (#1088); copilot dry-run + multi-target + hand-authored guard fixed (#1048); narrow applyTo placement pinned (#871).

Full per-PR list lives in CHANGELOG.md under [0.12.0].

Sanitization done in this PR

  • (#PR_NUMBER) placeholder on the local-bundle UnboundLocalError
    fix line filled in -> (#1108).
  • [Unreleased] heading kept as an empty placeholder above
    [0.12.0] so the next contributor PR can append entries
    without re-introducing the heading. (Same convention as the
    0.11.0 cut.)

Files changed

File Change
CHANGELOG.md Promote [Unreleased] -> [0.12.0] - 2026-05-03; insert empty [Unreleased]; fill #PR_NUMBER -> #1108.
pyproject.toml version = "0.11.0" -> "0.12.0".
uv.lock apm-cli 0.11.0 -> 0.12.0 (regenerated via uv lock).

Validation

  • uv run --extra dev ruff check src/ tests/ -- silent
  • uv run --extra dev ruff format --check src/ tests/ -- silent
  • uv lock -- regenerated cleanly, apm-cli==0.12.0
  • grep -c PR_NUMBER CHANGELOG.md -> 0

Post-merge admin

  • Tag v0.12.0 on the merge commit.
  • Close milestone 0.12.0 (add auto init on install package #9); ensure remaining open items are
    rolled over to the next milestone.
  • Trigger the release workflow (binary build + GitHub release).

Promotes [Unreleased] -> [0.12.0] - 2026-05-03 and bumps
pyproject.toml + uv.lock to 0.12.0.

Sanitization:
- Filled the residual (#PR_NUMBER) placeholder on the
  local-bundle UnboundLocalError fix entry -> (#1108)
- Preserved an empty [Unreleased] section above 0.12.0 so the
  next contributor PR can append entries without re-introducing
  the heading

Version-bump rationale: 0.12.0 (minor bump) chosen over 0.11.1
because this release ships TWO BREAKING changes:
- 'apm pack' now produces a Claude Code plugin directory by
  default; the legacy bundle layout requires --format apm (#1061)
- Dropped support for .collection.yml / .collection.yaml virtual
  packages (#1097)
plus several net-new features (Windsurf target, Claude Code MCP
install target, --target agent-skills, apm install <local-bundle>,
apm compile -t copilot, marketplace add HTTPS/nested URLs,
slash-command argument hints in Claude). Strict semver in 0.x:
minor for features-with-break, patch only for bugfixes.

44 commits since v0.11.0.

Validation:
- ruff check src/ tests/ -- silent
- ruff format --check src/ tests/ -- silent
- uv lock -- regenerated cleanly

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 3, 2026 00:43
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Cuts release 0.12.0 by promoting the existing [Unreleased] changelog entries into a dated release section and bumping the project version across the Python project metadata and lockfile.

Changes:

  • Promote changelog entries to ## [0.12.0] - 2026-05-03 and keep an empty ## [Unreleased] placeholder.
  • Bump pyproject.toml project version to 0.12.0.
  • Regenerate / update uv.lock so apm-cli resolves as 0.12.0.
Show a summary per file
File Description
CHANGELOG.md Moves the accumulated Unreleased entries under a 0.12.0 release heading and fills the remaining PR placeholder.
pyproject.toml Updates the package version to 0.12.0.
uv.lock Updates the editable apm-cli package version to 0.12.0.

Copilot's findings

  • Files reviewed: 2/3 changed files
  • Comments generated: 0

Daniel Meppiel and others added 2 commits May 3, 2026 10:22
integrate_local_bundle() recorded bare hex hashes in
local_deployed_file_hashes, but cleanup.py provenance check compares
against compute_file_hash() which returns 'sha256:<hex>'. The mismatch
caused stale-cleanup of local-bundle files to skip every file as
'user-edited' instead of removing files no longer in the bundle.

- services.py: write 'sha256:<hex>' on real deploy and dry-run paths
- cleanup.py: defensively normalize both sides of the equality check
  (handles legacy 0.12.0-rc lockfiles with bare hex)
- regression tests cover both the format consistency and the
  cross-flow cleanup interaction

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
These three integration test files exist and pass locally but were not
enumerated in scripts/test-integration.sh, so CI silently skipped them
and could not catch regressions in:

- apm pack default format (0.12.0 flipped from 'apm' to 'plugin')
- apm compile --target copilot (.github/copilot-instructions.md)
- transitive local_path anchoring across multi-level local chains

Surfaced by the test-coverage review of PR #1112.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@danielmeppiel danielmeppiel merged commit ba30947 into main May 3, 2026
9 checks passed
@danielmeppiel danielmeppiel deleted the release/0.12.0 branch May 3, 2026 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants